(for Internet Explorer)
Sub  StringReplaceSetClass::Replace( FromText as string, ToText as string )
テキストを置き換えることを登録します。
【引数】
FromText
ToText
置き換える前のテキスト
置き換えた後のテキスト
参考
Sub  StringReplaceSetClass::ReplaceRange( StartOfFromText as string, EndOfFromText as string,
                                          ToText as string )
指定のタグで囲まれたテキストを置き換えることを登録します。
【引数】
StartOfFromText
EndOfFromText
置き換える前のテキストが始まる場所にあるタグ(テキスト)
置き換える前のテキストが終わる場所にあるタグ(テキスト)
置き換えた後のテキスト。 通常、タグも含む。
ToText
参考
Function  StringReplaceSetClass::DoReplace( InputText as string ) as string
登録しておいた処理を実行します。
【引数】
InputText
返り値
置き換える前のテキスト
置き換えた後のテキスト
Set re = new_RegExp( "Function\(.*\)", True )
Function  new_RegExp( Pattern as string, IsCaseSensitive as boolean ) as RegExp
オブジェクトを簡易的に生成します。
【引数】
Pattern
IsCaseSensitive
正規表現
大文字小文字を区別するかどうか
返り値
正規表現オブジェクト
サンプル
→ 正規表現
ソース
→ vbslib.vbs
new Regular Expression
Assert  FindStringLines( "abc"+ vbCRLF +"def", "ab", Empty ) = "abc"+ vbCRLF
Function  FindStringLines( in_BeforeString as string,  in_RegularExpression as string or RegExp,
    in_Option as Empty )
複数行の文字列を、正規表現でマッチする行だけにします。
【引数】
in_BeforeString
in_RegularExpression
変換前の文字列
正規表現の文字列、または
in_Option
Empty または False (=マッチしない行だけにする)
テスト
サンプル
ソース
T_FindStringLines
→ T_Wildcard.vbs
→ vbslib.vbs
変換後の文字列
返り値
関連
Assert  FindStringLines( "abc"+ vbCRLF +"def", ".*", Empty ) = "abc"+ vbCRLF +"def"
参考
→ 正規表現
    Set  rep = OpenForReplace( "file1.txt", Empty )
    rep.Text = FindStringLines( rep.Text, """ERROR""", Empty )
    rep = Empty
→ 正規表現
Function  SortStringLines( in_BeforeString as string,  in_IsDuplicated as boolean )
テスト
ソース
T_FindStringLines
→ T_Wildcard.vbs
→ vbslib.vbs
複数行の文字列を、行単位で整列(ソート)します。
【引数】
in_BeforeString
in_IsDuplicated
整列前の文字列
重複する行をそのまま残すかどうか。 False = 重複したら1行にする
整列後の文字列
返り値
    lines = _
        "A"+ vbCRLF +_
        "C"+ vbCRLF +_
        "F"+ vbCRLF +_
        "C"

    lines = SortStringLines( lines, False )

    Assert  lines = _
        "A"+ vbCRLF +_
        "C"+ vbCRLF +_
        "F"+ vbCRLF
サンプル
関連
整列前の文字列の最後の行に改行文字がないときは、先頭の行にある改行文字が追加されます。
in_IsDuplicated = False のとき、改行文字だけ異なる行も、1行にします。
Function  GetLeftEndOfLinePosition( in_Text as string, in_PositionInText as integer )
現在位置にある行の先頭の位置を返します。
【引数】
in_Text
in_PositionInText
全体の文字列
現在位置、先頭 = 1
現在位置にある行の先頭の位置
返り値
    lines = _
        "A"+ vbCRLF +_
        "C"+ vbCRLF +_
        "F"+ vbCRLF +_
        "K"

    Assert  GetPreviousLinePosition( lines, InStr( lines, "F" ) ) = InStr( lines, "F" )
    Assert  GetPreviousLinePosition( lines, InStr( lines, "F" ) + 1 ) = InStr( lines, "F" )
    Assert  GetPreviousLinePosition( lines, 1 ) = 1
サンプル
T_GetPreviousLinePosition
テスト
→ T_Replace_target.vbs
ソース
→ vbslib.vbs
関連
Function  GetNextLinePosition( in_Text as string, in_PositionInText as integer )
1つ下の行の先頭の位置を返します。
【引数】
in_Text
in_OverPositionInText
全体の文字列
現在位置、先頭 = 1
1つ下の行の先頭の位置、0=下の行はない
返り値
in_OverPositionInText 引数に行の途中の位置を指定したときは、その次の行の先頭を返します。
in_OverPositionInText 引数に、最終行の中のどこかを指定したときは、0 を返します。
in_Test の末尾が改行のとき、その改行の次の文字にある行は、最終行ではありません。
Line1(CR+LF)
Line2(CR+LF)
Line1(CR+LF)
Line2
Line1(CR+LF)
(CR+LF)
… Line2 が最終行
… Line2 が最終行
… Line1の次の行が最終行
T_GetPreviousLinePosition
テスト
→ T_Replace_target.vbs
ソース
→ vbslib.vbs
Function  GetPreviousLinePosition( in_Text as string, in_OverPositionInText as integer )
1つ上の行の先頭の位置を返します。
【引数】
in_Text
in_OverPositionInText
全体の文字列
現在位置、先頭 = 1
1つ上の行の先頭の位置
返り値
    lines = _
        "A"+ vbCRLF +_
        "C"+ vbCRLF +_
        "F"+ vbCRLF +_
        "K"

    Assert  GetPreviousLinePosition( lines, InStr( lines, "F" ) ) = InStr( lines, "C" )
    Assert  GetPreviousLinePosition( lines, InStr( lines, "F" ) + 1 ) = InStr( lines, "F" )
    Assert  GetPreviousLinePosition( lines, 1 ) = 0
サンプル
T_GetPreviousLinePosition
テスト
→ T_Replace_target.vbs
ソース
→ vbslib.vbs
関連
in_OverPositionInText 引数に行の途中の位置を指定したときは、その行の先頭を返します。
in_OverPositionInText 引数に 1 (先頭) を指定したときは、0 を返します。
文字列を
と同じようにアクセスします。
.SetString( Str as string )
.ReadLine
.AtEndOfStream
1行入力します。 TextStream 互換
すべて入力したかどうか。 TextStream 互換
全体の文字列を設定し、ファイルポインタを先頭に戻す。
    Set file = new StringStream

    file.SetString  "123" +vbCRLF+ "456"

    Do Until  file.AtEndOfStream()
        echo  file.ReadLine()  ' 改行(vbCR+vbLF)は含まない
    Loop

    file = Empty
テスト
→ T_Replace_target.vbs
改行文字は、vbLF でも構いません。
.ReadAll
.Write
.WriteLine
全体を入力します。 TextStream 互換
文字列を出力します。 TextStream 互換
1行を出力します。 TextStream 互換
出力した文字列は、ReadAll で取得できます。
Write したものを先頭から Read するときは、ReadAll したものを SetString してください。
サンプル
文字列からリードする
    Set file = new StringStream

    file.WriteLine  "123"
    file.WriteLine  "456"

    Assert  file.ReadAll() = "123"+ vbCRLF +"456"+ vbCRLF

    file = Empty
文字列へライトする
サンプル
ソース
→ vbslib.vbs
.IsWithLineFeed
リードする1行の末尾に改行コードを含める
改行文字を維持するときは、IsWithLineFeed = True にして ReadLine → Write してください。
を使えば、改行文字を分けることができます。
関連
.Line
次にリードする行番号(1〜)
プロパティ
T_StringStream
.ReadingLineFeed
改行文字。初期値は vbLF (LF or CR+LF)。
vbCRLF のときは、LF は行に含む
テキストファイルの内容を変更します。
" " で囲む XML の属性値に変換します。
CSV 形式の1行を配列に格納する。
改行文字を削除します。
文字列 TextStream
クリップボードから文字列を取得します
行数をカウントします
正規表現で使われるメタ文字も検索できるように変換します。
Function  TestableNow() as Date
テストに使える現在の日時です。
【引数】
返り値
現在の日時、または、
関連
ソース
の設定値
→ vbslib.vbs
Function  new_TestableNow( a_Date as Date ) as TestableNowClass
が返す値を設定します。
【引数】
a_Date
TestableNow が返す値
削除したときに、TestableNow が返す値を現在日時に戻すオブジェクト
返り値
サンプル
Set tn = new_TestableNow( DateSerial( 2014, 1, 1 ) )

echo  TestableNow()

tn = Empty
ソース
→ vbslib.vbs
Function  IsTimeOnlyDate( aDateTime as Date ) as boolean
Date 型の値が、日付指定のない時刻だけの値であるかどうかを返します。
サンプル:
  IsTimeOnlyDate( CDate("2009/1/1") ) = False
  IsTimeOnlyDate( CDate("13:00") ) = True
(src)
Function  DateAddStr( BaseDate as Date, Plus as string ) as Date
日付時刻の加減算をします。
d = DateAddStr( CDate("2009/1/1"), "+1month 10days" )  '// d = CDate("2009/2/11")
t = DateAddStr( CDate("17:00"), "-8hours" )  '// t = CDate("9:00")
t = DateAddStr( CDate("10:00"), "+1hours -5min" )  '// t = CDate("10:55")
t = DateAddStr( CDate("10:00"), "-1hours -5min" )  '// t = CDate("8:55")
t = DateAddStr( CDate("10:00"), "-1hours  5min" )  '// t = CDate("8:55")
t = DateAddStr( CDate("10:00"), "-1hours +5min" )  '// t = CDate("9:05")
t = DateAddStr( CDate("10:00"), "+2:30" )  '// t = CDate("12:30")
t = DateAddStr( CDate("10:00"), "-2:30" )  '// t = CDate("7:30")
(src)
Plus 引数
先頭は、"+" か "-" を指定します。 先頭の "+" か "-" を省略すると "+" になります。
先頭以外の "+" か "-" を省略すると、それまでの "+" か "-" を引き継ぎます。
時分は、00:00 形式で指定できます。
単位に指定できるキーワードは次のものがあります。
"year", "years", "month", "months", "day", "days"
"hour", "hours", "minute", "minutes", "min", "second", "seconds", "sec"
関連
→ 時間の加減算 (clib)
→ T_Date.vbs # main
テスト
サンプル
サンプル
  echo  "日時の例:2008/06/11, 14:28:01, -1day, -2hours"
  echo  "Enter のみ:"+ limit_str_default
  limit_str = Input( "日時 >" )
  If limit_str = "" Then  limit_str = limit_str_default
  Select Case  Left( limit_str, 1 )
    Case "+", "-" :  limit = DateAddStr( Now(), limit_str )
    Case Else : limit = CDate( limit_str )
  End Select
日時でも、差分(1日前など)でもできる入力
Function  GetOldestDate() as Date
Data 型の最も過去の値を返します。
(src)
Function  W3CDTF( SourceTimeDate as Date or string ) as string or Date
日時を文字列(W3C-DTF)に変換します。 または、その逆変換をします。
(src)
サンプル
→ T_Date.vbs # W3CDTF
テスト
  W3CDTF( CDate( "2001/2/2 1:15" ) ) = "2001-02-02T01:15:00+09:00"
  W3CDTF( "2001-02-02T01:15:00+09:00" ) = CDate( "2001/02/02 1:15:00" )
  W3CDTF( "2001-02-02T00:00:00Z" ) = CDate( "2001/02/12 9:00" )
日本(UTC+9時間)の場合
0000
0000-00
0000-00-00
0000-00-00T00:00+00:00
0000-00-00T00:00:00+00:00
0000-00-00T00:00:00.0+00:00
YYYY-MM-DDThh:mm:ss.sTZD
YYYY-MM-DDThh:mm:ssTZD
YYYY-MM-DDThh:mmTZD
YYYY-MM-DD
YYYY-MM
YYYY
年月日時分秒が 1桁のときは 01 のように 0 をつけること。
年は4桁。小数部は何桁でもよい。
時刻(hh:mm:ss)は、現地の時刻を記述する。
XML などで国際的に使える日時の表記法。 タイムゾーンを考慮している。
ISO 8601:1988 に基づく。 XML Schema の dateTime 型より厳密で単純。
W3Cの標準仕様ではない。
は、"Z", "+00:00", "-00:00" のいずれか。
日時を引数に指定したら、文字列が返ります。
文字列を引数に指定したら、日時が返ります。
それ以外を指定したら、Empty が返ります。
W3C-DTF の文字列は、ファイル名に使うことができません。 : を ; に置き換えてください。
    a_date = CDateFromEMailDate( "Date: Fri, 25 Oct 2013 22:07:30 +0900" )
    Assert  W3CDTF( a_date ) = "2013-10-25T22:07:30+09:00"
Function  CDateFromEMailDate( DateString as string ) as Date
e-mail (MIME) 形式の日付を、VBScript の Date 型に変換します。
【引数】
DateString
返り値
e-mail (MIME) 形式の日付
日付
関連
サンプル
ソース
→ T_Date.vbs
テスト
T_EMailDate
→ MIME
→ vbslib.vbs
Function  GetMonthNumberFromString( MonthStr as string ) as integer
3文字からなる月の英語表記を、月の数字に変換します。
【引数】
MonthStr
返り値
3文字からなる月の英語表記
月の数字
Assert  GetMonthNumberFromString( "Jan" ) = 1
サンプル
ソース
→ T_Date.vbs
テスト
T_GetMonthNumberFromString
→ vbslib.vbs
Function  ConvertTimeZone( DateTime as Date or string, FromTZD as string, ToTZD as string )
            as Date or string
タイムゾーンを変更した時刻を返します。
【引数】
DateTime
FromTZD
変更前の時刻。 Date 型、または W3C-DTF 形式の文字列
変更前のタイムゾーン、または Empty
ToTZD
変更後のタイムゾーン、または Empty
(src)
変更後の時刻。 DateTime 引数と同じ型(Date型または文字列)
返り値
サンプル
  ConvertTimeZone( "2002-02-02T11:02:02+09:00", "+09:00", "Z" ) = "2002-02-02T02:02:02Z"
  ConvertTimeZone( CDate("2:02"), "Z", "+9:00" ) = CDate("11:02")
→ T_Date.vbs # ConvertTimeZone
テスト
DateTime に W3C-DTF を指定するときは、FromTZD は Empty または、DateTime に指定した
タイムゾーンと同じタイムゾーンを指定できます。

DateTime に Date 型を指定するときに、FromTZD を Empty にすると、現在 OS に設定されている
タイムゾーンを指定したことと同じになります。

ToTZD に Empty にすると、現在 OS に設定されているタイムゾーンを指定したことと同じになります。
Function  TimeZoneDesignator( MinuteBias as integer ) as string
W3C-DTF のタイムゾーンの部分の文字列を返します。
【引数】
MinuteBias
時差。単位は分。 Empty = OS に設定されているタイムゾーン
W3C-DTF のタイムゾーンの部分
返り値
(src)
サンプル
  TimeZoneDesignator( 540 ) = "+09:00"
  TimeZoneDesignator( Empty ) = "+09:00"  '// 日本の場合
→ T_Date.vbs # TimeZoneDesignator
テスト
Function  MinusTZD( MinuteBias as integer ) as string
W3C-DTF のタイムゾーンの部分の文字列をマイナスにして返します。
【引数】
MinuteBias
時差。単位は分。 Empty = OS に設定されているタイムゾーン
W3C-DTF のタイムゾーンの部分のマイナス
返り値
サンプル
  MinusTZD( 540 ) = "-09:00"
  MinusTZD( Empty ) = "-09:00"  '// 日本の場合
→ T_Date.vbs # MinusTZD
テスト
(src)
Minus Time Zone Disignator
Sub  BenchStart()
全体の処理時間の計測を開始します。
ファイル:
vbslib.vbs
BenchStart
For Each x  In Items
  Bench  1
    '// セクション1の計測区間
  Bench  2
    '// セクション2の計測区間
  Bench  0
Next
BenchEnd
Pause
サンプル
Benchmark Result:
Sampling Count = 1401
Elapsed Time = 0.151(sec)
Max is Section 2
Section 1:   3times   0.032(sec)
Section 2:   3times   0.102(sec)
計測結果の表示例
テスト
→ T_Date.vbs # T_Bench
(src)
サンプル
Sub  Main()
    BenchStart
    Bench  1
        '// セクション1の計測区間
    Bench  2
        '// セクション2の計測区間
    Bench  0
        '// 計測対象外
    BenchEnd  '// 表示
    Pause
End Sub
計測結果の表示例
Benchmark Result:
Sampling Count = 3
Elapsed Time = 0.022(sec)
Max is Section 1
Section 1:   1times        0.012(sec)
Section 2:   1times        0.010(sec)
参考